<?php

class Contact extends Controller {

    function Contact() {
        parent::Controller();
        $this->load->model('model_data');
        $this->load->model('model_contact');
        //verificare sesiune
        if (!$this->usersession->userLoggedIn()) {
            $aResponse = array("error" => true, "description" => "Sesiunea a expirat", "type" => "nosession");
            die(json_encode($aResponse));
        }
    }


    //functie care aduce informatii despre un contact
    function bringContact() {
        $result = $this->model_contact->bringContact($_POST);
        $aResponse = array("error" => false, "description" => "Datele au fost aduse", 'data' => $result);
        echo json_encode($aResponse);
    }

    function saveContact() {
        //se verifica existenta duplicatului
        if ($this->model_contact->_existsContact($_POST)) {
            $aResponse = array("error" => true, "description" => "Exista duplicat");
            echo json_encode($aResponse);
            return;
        }

        //validare business : nu se poate pune prioritate 2 daca emailurile sunt goale
        if ((trim($_POST["email"] == "")) && (trim($_POST["email2"] == "")) && (($_POST["priority"] == "2")||($_POST["priority"] == "3"))) {
            $aResponse = array("error" => true, "description" => "Nu puteti pune prioritate 2 daca emailurile sunt goale !", "type"=>"Validare");
            echo json_encode($aResponse);
            return;
        }

        //validare business : daca este dezabonat nu poate fi alocat pe alta campanie
        if ($_POST["unsubscribed"] == 1) {
            unset($_POST["client_id"]);
        }

        $iPersonId = $this->model_contact->saveContact($_POST);

        //actualizare mapare contact-campanie in tabelul client_persons
        //actualizare pe contact ultima campanie , id
        $result = $this->model_contact->saveContact2($iPersonId, $_POST);

        if ($result) {
            $aResponse = array("error" => false, "description" => "Datele au fost salvate", "success" => true);
        }
        echo json_encode($aResponse);
    }


    function modifyContact() {
        $result = $this->model_contact->modifyContact($_POST);
        $aResponse = array("error" => false, "description" => "Datele au fost salvate", "type" => "data");
        echo json_encode($aResponse);
    }

    function dezactivateContact() {
        $result = $this->model_contact->dezactivateContact($_POST);
        $aResponse = array("error" => false, "description" => "Datele au fost sterse");

        if (!$result) {
            $aResponse = array("error" => true, "description" => "Datele NU au fost sterse. Nu puteti sterge contactul cu ID 1");
        }

        echo json_encode($aResponse);
    }

    function bringCopies() {
        $table = 'copy';
        $s_limit = $this->input->post("start");
        $e_limit = $this->input->post("limit");
        $dir = $this->input->post("dir");
        $sort = $this->input->post("sort");

        switch ($sort)
        {
            case 'name':
                $sort = "$table.name";
                break;
        }
        echo json_encode($this->model_contact->bringCopies($table, $s_limit, $e_limit, $sort, $dir));
    }


    function makeCopy() {
        $result = $this->model_contact->makeCopy($_POST);
        $aResponse = array("error" => false, "description" => "Datele au fost salvate", "success" => true);
        echo json_encode($aResponse);
    }

    function getCopy() {
        $result = $this->model_contact->getCopy($_POST);
        $aResponse = array("error" => false, "description" => "Datele au fost aduse", "success" => true, 'data' => $result);
        echo json_encode($aResponse);
    }

    function deleteCopy() {
        $result = $this->model_contact->deleteCopy($_POST);
        $aResponse = array("error" => false, "description" => "Datele au fost aduse", "success" => true, 'data' => $result);
        echo json_encode($aResponse);
    }


    /**
     * Functie care aduce campaniile .. primele sunt cele de mapare in ordine descr de update_date , restul ordina alfabetica
     */
    function bringClient() {
        $result = $this->model_contact->bringClient($_POST);
        echo '{rows:' . json_encode($result) . '}';
    }

    /**
     * functie de scoatere / adaugare in masa pe o campanie pe baza id-ului
     * @return void
     */
    function moveId() {
        $aPost = array();
        copyPost($aPost);

        $sDescription = $this->model_contact->moveId($aPost);
        if ($sDescription != "") {
            $sDescription = " cu exceptia exista ID-urilor : ".$sDescription;
        }

        $aResponse = array("error" => false, "description" => "Datele au fost salvate".$sDescription);
        echo json_encode($aResponse);
    }


}

